Skip to content

refactor: standardize Good First Issue label handling#2194

Closed
bhuvan-somisetty wants to merge 12 commits into
hiero-ledger:mainfrom
bhuvan-somisetty:fix/2178-standardize-gfi-label
Closed

refactor: standardize Good First Issue label handling#2194
bhuvan-somisetty wants to merge 12 commits into
hiero-ledger:mainfrom
bhuvan-somisetty:fix/2178-standardize-gfi-label

Conversation

@bhuvan-somisetty

Copy link
Copy Markdown
Contributor

Description:
Standardize usage of the "Good First Issue" label across scripts, workflows, issue templates, and documentation to ensure consistent behavior in GitHub automation.

  • Updated inconsistent label text to "Good First Issue"
  • Preserved lowercase comparisons where .toLowerCase() is used
  • Improved wording in docs/templates (including plural forms where appropriate)
  • Ensured no change in existing automation logic

-->

Related issue(s):
Fixes #2178

Notes for reviewer:
Changes are limited to label text standardization across relevant files. No functional or behavioral changes were introduced. All comparisons using .toLowerCase() were intentionally kept unchanged to preserve logic.

Checklist:

  • Documented (updated relevant docs/templates)
  • Tested (ran pre-commit hooks locally; formatting and lint checks passed)

Signed-off-by: Bhuvan Somisetty <somisettybhuvan5@gmail.com>
Signed-off-by: Bhuvan Somisetty <somisettybhuvan5@gmail.com>
Signed-off-by: Bhuvan Somisetty <somisettybhuvan5@gmail.com>
Signed-off-by: Bhuvan Somisetty <somisettybhuvan5@gmail.com>
Signed-off-by: Bhuvan Somisetty <somisettybhuvan5@gmail.com>
@codacy-production

codacy-production Bot commented Apr 25, 2026

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@exploreriii exploreriii added reviewer: junior committer request review from junior committers with triage permissions step: 1st 1st stage of the review approval process labels Apr 25, 2026
@coderabbitai

coderabbitai Bot commented Apr 25, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@bhuvan-somisetty has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 21 minutes and 51 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 67e295d9-3cfa-4ea6-9181-e490a9bbabef

📥 Commits

Reviewing files that changed from the base of the PR and between 2f07929 and 905e101.

📒 Files selected for processing (11)
  • .github/scripts/coderabbit_plan_trigger.js
  • .github/workflows/bot-coderabbit-plan-trigger.yml
  • src/hiero_sdk_python/consensus/topic_create_transaction.py
  • src/hiero_sdk_python/query/transaction_get_receipt_query.py
  • src/hiero_sdk_python/tokens/token_create_transaction.py
  • src/hiero_sdk_python/tokens/token_update_transaction.py
  • src/hiero_sdk_python/transaction/transaction.py
  • src/hiero_sdk_python/transaction/transaction_receipt.py
  • tests/integration/account_records_query_e2e_test.py
  • tests/integration/transaction_get_receipt_query_e2e_test.py
  • tests/unit/get_receipt_query_test.py

Walkthrough

This PR standardizes capitalization of "Good First Issue" label references across GitHub issue templates, automation scripts, and documentation from lowercase variants to consistent title case, and updates the step-security/harden-runner action version.

Changes

Cohort / File(s) Summary
GitHub Issue Templates
.github/ISSUE_TEMPLATE/00-good-first-issue-candidate.yml, 01-good-first-issue.yml, 02-beginner-issue.yml
Text capitalization standardized from lowercase "good first issue(s)" to "Good First Issue(s)" in issue template guidance sections and prerequisites descriptions.
GitHub Automation Scripts
.github/scripts/bot-gfi-assign-on-comment.js
JSDoc comment updated to reflect correct label capitalization ("Good First Issue" instead of "good first issue").
Good First Issue Label Handling
.github/scripts/bot-next-issue-recommendation.js
Label text updated to use consistent exact-cased Good First Issue across difficulty classification, fallback search query, and cross-repository search query embedded in PR comment generation.
Developer Documentation
docs/sdk_developers/training/workflow/04_assigning_issues.md
Reference text capitalized from "good first issue" to "Good First Issue" in issue claiming instructions.
Workflow Dependency Update
.github/workflows/publish.yml
The step-security/harden-runner GitHub Action reference downgraded from v2.19.0 to v2.18.0 in both build and publish-and-sign jobs.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 3

❌ Failed checks (2 warnings, 1 inconclusive)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The PR includes an out-of-scope change: downgrading the harden-runner GitHub Action from v2.19.0 to v2.18.0 in the publish workflow, which is unrelated to Good First Issue label handling. Remove the harden-runner version downgrade from the publish workflow unless it is directly related to the Good First Issue label standardization objective.
Docstring Coverage ⚠️ Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Linked Issues check ❓ Inconclusive The PR addresses the core requirement of issue #2178 by standardizing Good First Issue label text across scripts, templates, and docs; however, it only partially implements the full scope by not centralizing label handling into a single source of truth. Verify that the label standardization does not introduce inconsistencies and consider whether further centralization of label constants is needed to fully meet issue #2178's intent.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: standardizing Good First Issue label handling across multiple files and scripts.
Description check ✅ Passed The description is directly related to the changeset, explaining the standardization of Good First Issue label usage and noting no functional changes.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

📋 Issue Planner

Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).

View plan for ticket: #2178

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
Review rate limit: 0/1 reviews remaining, refill in 21 minutes and 51 seconds.

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/scripts/bot-next-issue-recommendation.js (1)

55-65: ⚠️ Potential issue | 🔴 Critical

Critical: labelSet.has('Good First Issue') will never match — recommendation bot is broken for GFIs.

Line 55 lowercases every label name before inserting into labelSet, so the Set only ever contains entries like 'good first issue'. Set.prototype.has uses SameValueZero (case-sensitive) equality, so labelSet.has('Good First Issue') always returns false. As a result:

  • difficultyLevels.goodFirstIssue is permanently false.
  • The early return at line 74 silently skips GFI-only issues (those without a beginner label).
  • At line 97, completedLabel is mislabeled as 'Beginner' even when the issue is a GFI.

This regresses the assertion in the PR description — "Preserved existing lowercase comparisons that use .toLowerCase() to avoid changing logic." The comparison side here was changed and breaks the gating.

🐛 Proposed fix — keep the comparison case-insensitive (consistent with `bot-gfi-assign-on-comment.js`)
     // Determine issue difficulty level
     const difficultyLevels = {
       beginner: labelSet.has('beginner'),
-      goodFirstIssue: labelSet.has('Good First Issue'),
+      goodFirstIssue: labelSet.has('good first issue'),
       intermediate: labelSet.has('intermediate'),
       advanced: labelSet.has('advanced'),
     };

Alternatively, lift 'Good First Issue' into a top-level constant and lowercase it at the comparison site — that would match the pattern used in bot-gfi-assign-on-comment.js (GOOD_FIRST_ISSUE_LABEL.toLowerCase()) and serve as the single source of truth requested in issue #2178.

As per coding guidelines: "Use top-level constants for configuration — avoid hardcoded values scattered through the script."


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: ae1e6a30-ef09-4756-add4-335362ab4d57

📥 Commits

Reviewing files that changed from the base of the PR and between 53cc7ae and a7bddd6.

📒 Files selected for processing (8)
  • .github/ISSUE_TEMPLATE/00-good-first-issue-candidate.yml
  • .github/ISSUE_TEMPLATE/01-good-first-issue.yml
  • .github/ISSUE_TEMPLATE/02-beginner-issue.yml
  • .github/scripts/bot-gfi-assign-on-comment.js
  • .github/scripts/bot-next-issue-recommendation.js
  • .github/workflows/bot-gfi-candidate-notification.yaml
  • docs/sdk_developers/code_of_conduct.md
  • docs/sdk_developers/training/workflow/04_assigning_issues.md

Comment thread .github/ISSUE_TEMPLATE/00-good-first-issue-candidate.yml Outdated
Comment thread .github/ISSUE_TEMPLATE/01-good-first-issue.yml Outdated
Comment thread .github/workflows/bot-gfi-candidate-notification.yaml Outdated
Comment thread .github/ISSUE_TEMPLATE/00-good-first-issue-candidate.yml Outdated
Comment thread .github/ISSUE_TEMPLATE/01-good-first-issue.yml Outdated
@aceppaluni aceppaluni added the step: 2nd second stage of the review approval process label Apr 25, 2026
@bhuvan-somisetty

Copy link
Copy Markdown
Contributor Author

Hi, I have removed the duplicate "Adapt as needed" text from the issue templates as suggested. Please review again. Thanks!

Signed-off-by: Bhuvan Somisetty <somisettybhuvan5@gmail.com>
@bhuvan-somisetty
bhuvan-somisetty force-pushed the fix/2178-standardize-gfi-label branch from 3b724ed to 48c490e Compare April 26, 2026 01:24
@bhuvan-somisetty

Copy link
Copy Markdown
Contributor Author

Removed the duplicate "Adapt as needed" text and fixed the DCO sign-off. Please review again. Thanks!

Signed-off-by: Bhuvan Somisetty <somisettybhuvan5@gmail.com>
@exploreriii exploreriii removed the step: 2nd second stage of the review approval process label Apr 26, 2026
@github-actions github-actions Bot added skill: intermediate requires some knowledge of the codebase with some defined steps to implement or examples lang: javascript Uses Javascript programming language notes: extra care requires extra attention to detail or requirements scope: CI/CD involves continuous integration or delivery labels Apr 26, 2026
aceppaluni
aceppaluni previously approved these changes Apr 26, 2026

@aceppaluni aceppaluni left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work!

Comment thread .github/workflows/publish.yml Outdated
dist/*.tar.gz
verify: true
verify-cert-identity: https://github.com/${{ github.repository }}/.github/workflows/publish.yml@refs/tags/${{ github.ref_name }}
verify-cert-identity: https://github.com/${{ github.repository }}/.github/workflows/release-publish.yml@refs/tags/${{ github.ref_name }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is part of a different PR - change should not be part of this

@exploreriii
exploreriii marked this pull request as draft April 26, 2026 22:12
@exploreriii exploreriii removed reviewer: junior committer request review from junior committers with triage permissions step: 1st 1st stage of the review approval process labels Apr 26, 2026
Signed-off-by: Bhuvan Somisetty <somisettybhuvan5@gmail.com>
@bhuvan-somisetty

Copy link
Copy Markdown
Contributor Author

Removed the unrelated workflow change from this PR. This PR now only focuses on the Good First Issue label/template updates.

Signed-off-by: Bhuvan Somisetty <somisettybhuvan5@gmail.com>
@bhuvan-somisetty
bhuvan-somisetty force-pushed the fix/2178-standardize-gfi-label branch from 5e28a04 to d97d972 Compare April 27, 2026 17:17
@bhuvan-somisetty

Copy link
Copy Markdown
Contributor Author

Removed unrelated CodeRabbit workflow changes from this PR.

This PR now strictly focuses on Good First Issue label standardization only.

Please review again. Thanks!

@bhuvan-somisetty
bhuvan-somisetty marked this pull request as ready for review April 27, 2026 17:36
@exploreriii exploreriii added step: 1st 1st stage of the review approval process reviewer: junior committer request review from junior committers with triage permissions reviewer: community pull requests looking for community reviews labels Apr 28, 2026

@darshit2308 darshit2308 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for putting this together @bhuvan-somisetty , great work on this one ! Standardizing our label handling is a great initiative.

I have left a few inline comments on specific lines. The two main blockers are:

  1. A critical logic regression in bot-next-issue-recommendation.js: The Set.has() check will now always fail due to strict case-sensitivity against previously lowercased inputs, breaking the bot automation. I recommend centralizing the label constants in .github/scripts/labels.js to prevent these mismatch issues across the codebase.
  2. Unrelated workflow downgrades: The publish.yml file still contains version downgrades for the security runner that need to be reverted to keep this PR strictly scoped.

const difficultyLevels = {
beginner: labelSet.has('beginner'),
goodFirstIssue: labelSet.has('good first issue'),
goodFirstIssue: labelSet.has('Good First Issue'),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Set.has() is strictly case-sensitive. Because the labels are normalized to lowercase earlier in this script, evaluating against 'Good First Issue' here will always return false. I ran a mock run to verify, and a valid GFI label gets skipped with the message: "Issue is not a Good First Issue or beginner issue, skipping." We should either compare against a lowercased string here, or better yet, centralize this in .github/scripts/labels.js as the single source of truth and import it.

Comment thread .github/workflows/publish.yml Outdated
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@8d3c67de8e2fe68ef647c8db1e6a09f647780f40 # v2.19.0
uses: step-security/harden-runner@6c3c2f2c1c457b00c10c4848d6f5491db3b629df # v2.18.0

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changes the step-security/harden-runner from v2.19.0 to v2.18.0. Since this PR is strictly scoped to label standardization, this unrelated version downgrade needs to be reverted.

Comment thread .github/workflows/publish.yml Outdated
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@8d3c67de8e2fe68ef647c8db1e6a09f647780f40 # v2.19.0
uses: step-security/harden-runner@6c3c2f2c1c457b00c10c4848d6f5491db3b629df # v2.18.0

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changes the step-security/harden-runner from v2.19.0 to v2.18.0. Since this PR is strictly scoped to label standardization, this unrelated version downgrade needs to be reverted.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
.github/workflows/publish.yml (1)

18-18: ⚠️ Potential issue | 🟠 Major

Revert the harden-runner downgrade from this PR.

Line 18 and Line 65 introduce an unrelated step-security/harden-runner version downgrade (v2.19.0v2.18.0) in a PR scoped to Good First Issue label standardization. Please remove this change from this PR and handle it separately if needed.

As per coding guidelines, "Focus feedback on the PR's stated scope."

Also applies to: 65-65


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: a17ce467-95fc-4ae2-862c-c05225944645

📥 Commits

Reviewing files that changed from the base of the PR and between 3b724ed and 2f07929.

📒 Files selected for processing (3)
  • .github/ISSUE_TEMPLATE/00-good-first-issue-candidate.yml
  • .github/ISSUE_TEMPLATE/01-good-first-issue.yml
  • .github/workflows/publish.yml

Signed-off-by: Bhuvan Somisetty <somisettybhuvan5@gmail.com>
@bhuvan-somisetty
bhuvan-somisetty force-pushed the fix/2178-standardize-gfi-label branch from 2f07929 to 905e101 Compare April 29, 2026 21:19
@bhuvan-somisetty

Copy link
Copy Markdown
Contributor Author

Removed unrelated changes as requested. This PR now only includes Good First Issue label/template updates.

@exploreriii exploreriii left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bhuvan-somisetty i am closing this PR - please reopen it using a fresh copy of the updated main, ensuring only the changes are pushed that solve the issue linked and assigned.

Note there are 15 file changes, you are submitting changes to consensus, query, tokens, code rabbit, as well as GFI

https://github.com/hiero-ledger/hiero-sdk-python/pull/2194/changes

Closing as in its current form it is vastly not meeting quality standards

@exploreriii exploreriii closed this May 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lang: javascript Uses Javascript programming language notes: extra care requires extra attention to detail or requirements reviewer: community pull requests looking for community reviews reviewer: junior committer request review from junior committers with triage permissions scope: CI/CD involves continuous integration or delivery skill: intermediate requires some knowledge of the codebase with some defined steps to implement or examples step: 1st 1st stage of the review approval process

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Refactor Good First Issue label handling across .github workflows and scripts

4 participants